# coding:utf-8


import socket;
import re;

from multiprocessing import Process
# from  socket import  socket,AF_INET

HTML_ROOT_DIR = "./html"
    # 处理客户端请求
    # 获取客户端请求数据
def handle_client(args):
    client_socket = args;
    request_data = client_socket.recv(1024);
    print (request_data);
    request_lines = request_data.splitlines();
    for line in request_lines:
        print(line);
    request_start_line = request_lines[0];
    #提取用户请求的明文件名
    sss = request_start_line.decode("utf-8");
    print("=====")
    print(sss)
    print("=====")

    file_name = "/" #re.match(r"\w+ +(/[^ ]*)",sss.group[1])
    if "/" == file_name:
        file_name = "/index.html"
    #打开文件，读取内容
    try:
        file = open(HTML_ROOT_DIR+file_name,"rb");
    except IOError:
        response_start_line = "HTTP/1.1 404 error\r\n"
        response_headers = "Server: My server\r\n"
        response_body = "the file is not found!!"
    else:
        response_start_line = "HTTP/1.1 200 OK\r\n"
        response_headers = "Server: My server\r\n"
        file_data = file.read();
        file.close();
        #构造响应数据
        response_body = file_data.decode("utf-8")
    response = response_start_line+response_headers+"\r\n"+response_body
    #print "response data:"+response
    #向客户端返回数据
    # client_socket.send(response)
    client_socket.send(bytes(response,"utf-8"))
    #关闭用户连接
    client_socket.close()

if __name__ == "__main__":
    server_socket = socket.socket(socket.AF_INET,socket.SOCK_STREAM)
    server_socket.setsockopt(socket.SOL_SOCKET,socket.SO_REUSEADDR,1)
    # server_socket.bind("",8000);
    server_socket.bind(('', 8083))
    print(server_socket);
    server_socket.listen(128);

    while True:
        print("1")
        client_socket,client_address = server_socket.accept();
        print("=====")
        print(client_address);
        print("=====")

        if client_socket and client_address:
            print("进入 if 语句")
            handle_client_process = Process(target=handle_client,args=(client_socket,))
            handle_client_process.start();
            client_socket.close();








































